package JDKdynamicProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @Author:zimmor
 * @Date: 2021/3/25 9:43
 * @Description 实现 InvocationHandler接口的处理器类
 * @version: 1.0.0
 */

public class DynamicProxyHandler implements InvocationHandler {
    //要被代理的对象
    private Object target;
    //通过构造的方式把要被代理的对象传进来
    public DynamicProxyHandler(Object object) {
        target = object;
    }
    //通过代理对象去代用目标对象都会通过invoke这个方法去代用目标对象的方法，如果要在代理中也业务逻辑，就可以在这里写

    /**
     * invoke方法通过反射原理去调用每个目标对象的方法
     * @param proxy 代理对象
     * @param method 这个对象个可以来调用目标对象的方法
     * @param args 调用目标方法时，该方法对应的参数
     * @return
     * @throws Throwable
     */
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("代理出场，华丽全场");
        return method.invoke(target, args);
    }
}
